Aντιμετωπιζουμε ενα σοβαρο προβλημα, ο κωδικας που χρησιμοποιειται ειναι ο παρακατω. Το προβλημα παρατηρειται κατα τη στιγμη access του silverlight application στην καρτα ηχου. Η χρηση cpu αυξανει και αυτο το προβλημα παρατηρειται σε ολους τους broswer. Eαν αφησουμε το siliverlight popup με το dialog για το confirmation του access στη καρτα η στη καμερα, μετα απο λιγο το silverlight γινεται crash απο τον φυλομετρητη.
Aυτο το προβλημα παρατηρειται ακομα κι αν η εφαρμογη τρεξει εκτος broswer, με τη χρηση του slllauncher.exe. Χρησιμοποιουμε sl4, visual studio 2010 και το ιδιο παρατηρειται με ολους τους broswer IE,FF4,FF3.5,Chrome. To προβλημα ειναι ακομα πιο σοβαρο σε παλιοτερης τεχνολογιας υπολογιστες με windows xp. και συνηθως αυτο που παρατηρειται ειναι το pc να παγωνει και να χρειαζεται restart.
ακολουθει ο κωδικας και ενα screenshot οπου βλεπετε ξεκαθαρα το προβλημα.
private void StartStopRecBtn_Click(object sender, RoutedEventArgs e)
{
if (!recordingStatus)
{
ReadOnlyCollection<AudioCaptureDevice> devices = CaptureDeviceConfiguration.GetAvailableAudioCaptureDevices();
if (devices.Count == 0)
return;
if (!CaptureDeviceConfiguration.AllowedDeviceAccess)
{
CaptureDeviceConfiguration.RequestDeviceAccess();
}
if (CaptureDeviceConfiguration.AllowedDeviceAccess)
{
recImg.Source = new BitmapImage(new Uri("Images/StopRecording.jpg", UriKind.RelativeOrAbsolute));
if (audioSink == null)
{
capture = new CaptureSource();
capture.AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
capture.VideoCaptureDevice = null;
audioSink = new MemoryStreamAudioSink();
audioSink.CaptureSource = capture;
}
else
{
audioSink.CaptureSource.Stop();
audioSink = null;
}
try
{
if (audioSink != null)
audioSink.CaptureSource.Start();
else
StatusText.Text = "Not ready to Record..";
}
catch (InvalidOperationException ex)
{
MessageBox.Show("There was a problem starting the webcam " +
"If using a Mac, verify default device settings." +
"Right click app to access the Configuration settings." + ex.Message + " " + ex.InnerException);
}
Thread.Sleep(TimeSpan.FromSeconds(0.5));
recordingStatus = true;
}
}
else
{
recordingStatus = false;
StatusText.Text = "Ready to Record..";
recImg.Source = new BitmapImage(new Uri("Images/StartRecording.jpg", UriKind.RelativeOrAbsolute));
audioSink.CaptureSource.Stop();
}
}
![]()